package com.artisan.provider.utils;

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dm.model.v20151123.SingleSendMailRequest;
import com.aliyuncs.dm.model.v20151123.SingleSendMailResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;

public class AliyunEmailUtils {

    /**
     * toAddress 为邮箱地址 也可多邮箱进行拼接
     * htmlBody  为发送邮件的正文
     * @param toAddress
     * @param htmlBody
     */
    public static void sample(String toAddress,String htmlBody) {
        // 如果是除杭州region外的其它region（如新加坡、澳洲Region），需要将下面的"cn-hangzhou"替换为"ap-southeast-1"、或"ap-southeast-2"。
        IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", "LTAI5t5dT45XsPojToZCS89V", "bBUPn4AtYF7MIIGRk8MqFs7Cw5tzL6");
        // 如果是除杭州region外的其它region（如新加坡region）， 需要做如下处理
        //try {
        //DefaultProfile.addEndpoint("dm.ap-southeast-1.aliyuncs.com", "ap-southeast-1", "Dm",  "dm.ap-southeast-1.aliyuncs.com");
        //} catch (ClientException e) {
        //e.printStackTrace();
        //}
        IAcsClient client = new DefaultAcsClient(profile);
        SingleSendMailRequest request = new SingleSendMailRequest();
        try {
            //request.setVersion("2017-06-22");// 如果是除杭州region外的其它region（如新加坡region）,必须指定为2017-06-22
            request.setAccountName("100583001@ezbluvip.com");
            request.setFromAlias("EZbluVip");//发信人昵称，长度小于15个字符。
            request.setAddressType(1);//0：为随机账号 1：为发信地址
            request.setTagName("EZblu");
            request.setReplyToAddress(false);// 是否启用管理控制台中配置好回信地址（状态须验证通过），取值范围是字符串true或者false
            //request.setToAddress("842529824@qq.com"); // 公司winnie 个人邮箱 winnie@dyviv.com  // faceBook   socialmedia@gentemusic.com  //Elsie: 523802281@qq.com  //财务:lily@dyviv.com
            //可以给多个收件人发送邮件，收件人之间用逗号分开，批量发信建议使用BatchSendMailRequest方式
            //request.setToAddress("邮箱1,邮箱2");
            request.setToAddress(toAddress);
            request.setSubject("EZblu注册会员");  // EZblu注册会员
            //如果采用byte[].toString的方式的话请确保最终转换成utf-8的格式再放入htmlbody和textbody，若编码不一致则会被当成垃圾邮件。
            //注意：文本邮件的大小限制为3M，过大的文本会导致连接超时或413错误
            //request.setHtmlBody("恭喜您成为我们EZblu会员,我们将为你提供高质量的服务,让您觉得物超所值!"); // 恭喜您成为我们EZblu会员,我们将为你提供高质量的服务,让您觉得物超所值!
            request.setHtmlBody(htmlBody);
            //SDK 采用的是http协议的发信方式, 默认是GET方法，有一定的长度限制。
            //若textBody、htmlBody或content的大小不确定，建议采用POST方式提交，避免出现uri is not valid异常
            request.setMethod(MethodType.POST);
            //开启需要备案，0关闭，1开启
            //request.setClickTrace("0");
            //调用模板,批量发邮件
            //request.setTemplateName("test模板");
            //request.setReceiversName("测试-test"); “测试-test”为收件人列表名称。 //参照阿里云https://help.aliyun.com/document_detail/29459.html#h2--access-key1 sdk使用场景
            //如果调用成功，正常返回httpResponse；如果调用失败则抛出异常，需要在异常中捕获错误异常码；错误异常码请参考对应的API文档;
            SingleSendMailResponse httpResponse = client.getAcsResponse(request);
            System.out.println("发送成功------------------------");
            System.out.println(httpResponse);
        } catch (ServerException e) {
            //捕获错误异常码
            System.out.println("ErrCode : " + e.getErrCode());
            e.printStackTrace();
        }
        catch (ClientException e) {
            //捕获错误异常码
            System.out.println("ErrCode : " + e.getErrCode());
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        // toAddress 邮箱地地址  htmlBody  发送内容
        // sample("842529824@qq.com","teststesstestestsetsetset");
        // staff@giannanannini.com
         sample("13923815937@163.com","恭喜您成为我们EZblu会员,我们将为你提供高质量的服务,让您觉得物超所值!");
    }


}
